const Koa = require('koa');  //构造函数

const app = new Koa();

//中间件  函数 request ,response

// app.use(async (ctx,next) => {
//    console.log(ctx.path)   //请求路径  /search
//    console.log(ctx.url)    // /search?key=羽绒服
//    console.log(ctx.query);  // {key:羽绒服} {limit:10,pagenum:1}
//    console.log(ctx.querystring); //limit=10&pagenum=1
//    //....
   
//    ctx.body = {code:1,list:[1,2,3]}
// })

//每个请求需要花费的时间

app.use(async (ctx,next) => {
    let startTime = new Date().getTime(); //开始时间
    console.log("洋葱圈模型第一层开始")  //1 -- end
    await next();//2--- end
    console.log("洋葱圈模型第一层结束") //9--end
    let endTime = new Date().getTime(); //结束时间
    let timer = endTime - startTime;
    ctx.body = timer;
})

app.use(async (ctx,next) => {
    console.log("洋葱圈模型第二层开始")  //3---end
    await next(); //4 ----end 
    console.log("洋葱圈模型第二层结束") //8 ---end
})

// Promise 解决回调地狱，深层嵌套问题

function delay(){
    return new Promise((resolve,reject) => {
        setTimeout(() => {
            resolve()
        },2000)
    })
}

app.use(async (ctx,next) => {
    console.log("洋葱圈模型第三层开始") //5--end 
    await delay();//2000
    await next();  //6. --end 
    console.log("洋葱圈模型第三层结束") //7---end
})

app.listen(process.env.PORT || 3000,() => {
    console.log("服务启动成功")
}) //set PORT=XXXX

// ajax({
//     url:'/api/userid',
//     success(res){
//         //用户res.id  //列表
//         ajax({
//             url:'/api/list?id='+res.id,
//             success(twoRes){
//                 ajax({
//                     url:'',
//                     success(){

//                     }
//                 })
//             }
//         })

//     },
//     error(error){

//     }
// })

//promise axios

// axios.get('/api/userid').then(res => {
//     //res.id
//     return axios.get('/api/xxx',{params:{id:res.id}})
// }).then(twoRes => {
//     return axios.get('/api/xxx',{params:{id:res.id}})
// }).then(threeRes => {

// })